<!DOCTYPE html>












  


<html class="theme-next muse use-motion" lang>
<head><meta name="generator" content="Hexo 3.9.0">
  <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
<meta name="theme-color" content="#222">




  
  
    
    
  <script src="/lib/pace/pace.min.js?v=1.0.2"></script>
  <link rel="stylesheet" href="/lib/pace/pace-theme-minimal.min.css?v=1.0.2">







  <meta name="google-site-verification" content="true">







  <meta name="baidu-site-verification" content="true">











<link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2">

<link rel="stylesheet" href="/css/main.css?v=6.7.0">


  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png?v=6.7.0">


  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png?v=6.7.0">


  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png?v=6.7.0">


  <link rel="mask-icon" href="/images/logo.svg?v=6.7.0" color="#222">







<script id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Muse',
    version: '6.7.0',
    sidebar: {"position":"left","display":"post","offset":12,"b2t":false,"scrollpercent":false,"onmobile":false},
    fancybox: false,
    fastclick: false,
    lazyload: false,
    tabs: true,
    motion: {"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"slideDownIn","post_body":"slideDownIn","coll_header":"slideLeftIn","sidebar":"slideUpIn"}},
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":5},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>


  





    <meta name="baidu-site-verification" content="8NezAkUO3s">


  <meta name="description" content="1、环境管理：管理 Python 版本和环境的工具。p – 非常简单的交互式 python 版本管理工具。pyenv – 简单的 Python 版本管理工具。Vex – 可以在虚拟环境中执行命令。virtualenv – 创建独立 Python 环境的工具。virtualenvwrapper– virtualenv 的一组扩展。 2、包管理：管理包和依赖的工具。pip – Python 包和依赖关">
<meta name="keywords" content="python">
<meta property="og:type" content="article">
<meta property="og:title" content="python library description">
<meta property="og:url" content="https://moonclearner.cn/python/libDescription.html">
<meta property="og:site_name" content="moonclearner page">
<meta property="og:description" content="1、环境管理：管理 Python 版本和环境的工具。p – 非常简单的交互式 python 版本管理工具。pyenv – 简单的 Python 版本管理工具。Vex – 可以在虚拟环境中执行命令。virtualenv – 创建独立 Python 环境的工具。virtualenvwrapper– virtualenv 的一组扩展。 2、包管理：管理包和依赖的工具。pip – Python 包和依赖关">
<meta property="og:locale" content="default">
<meta property="og:updated_time" content="2020-01-07T10:50:17.430Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="python library description">
<meta name="twitter:description" content="1、环境管理：管理 Python 版本和环境的工具。p – 非常简单的交互式 python 版本管理工具。pyenv – 简单的 Python 版本管理工具。Vex – 可以在虚拟环境中执行命令。virtualenv – 创建独立 Python 环境的工具。virtualenvwrapper– virtualenv 的一组扩展。 2、包管理：管理包和依赖的工具。pip – Python 包和依赖关">



  <link rel="alternate" href="/atom.xml" title="moonclearner page" type="application/atom+xml">




  <link rel="canonical" href="https://moonclearner.cn/python/libDescription.html">



<script id="page.configurations">
  CONFIG.page = {
    sidebar: "",
  };
</script>

  <title>python library description | moonclearner page</title>
  












  <noscript>
  <style>
  .use-motion .motion-element,
  .use-motion .brand,
  .use-motion .menu-item,
  .sidebar-inner,
  .use-motion .post-block,
  .use-motion .pagination,
  .use-motion .comments,
  .use-motion .post-header,
  .use-motion .post-body,
  .use-motion .collection-title { opacity: initial; }

  .use-motion .logo,
  .use-motion .site-title,
  .use-motion .site-subtitle {
    opacity: initial;
    top: initial;
  }

  .use-motion .logo-line-before i { left: initial; }
  .use-motion .logo-line-after i { right: initial; }
  </style>
</noscript>

</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="default">
  <div class="bg_content">
      <canvas id="canvas"></canvas>
  </div>

  
  
    
  

  <div class="container sidebar-position-left page-post-detail">
    <div class="headband"></div>
    <!--github-start-->
    <a href="https://github.com/moonclearner" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewbox="0 0 250 250" style="fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"/><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"/><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"/></svg></a><style>.github-corner:hover .octo-arm{animation:octocat-wave 560ms ease-in-out}@keyframes octocat-wave{0%,100%{transform:rotate(0)}20%,60%{transform:rotate(-25deg)}40%,80%{transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm{animation:none}.github-corner .octo-arm{animation:octocat-wave 560ms ease-in-out}}</style>
    <!--github-end-->

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta">
    

    <div class="custom-logo-site-title">
      <a href="/" class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">moonclearner page</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
    
      
        <p class="site-subtitle">moonclearner blog</p>
      
    
    
  </div>

  <div class="site-nav-toggle">
    <button aria-label="Toggle navigation bar">
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>



<nav class="site-nav">
  
    <ul id="menu" class="menu">
      
        
        
        
          
          <li class="menu-item menu-item-home">

    
    
    
      
    

    

    <a href="/" rel="section"><i class="menu-item-icon fa fa-fw fa-home"></i> <br>Home</a>

  </li>
        
        
        
          
          <li class="menu-item menu-item-tags">

    
    
    
      
    

    

    <a href="/tags/" rel="section"><i class="menu-item-icon fa fa-fw fa-tags"></i> <br>Tags</a>

  </li>
        
        
        
          
          <li class="menu-item menu-item-categories">

    
    
    
      
    

    

    <a href="/categories/" rel="section"><i class="menu-item-icon fa fa-fw fa-th"></i> <br>Categories</a>

  </li>
        
        
        
          
          <li class="menu-item menu-item-archives">

    
    
    
      
    

    

    <a href="/archives/" rel="section"><i class="menu-item-icon fa fa-fw fa-archive"></i> <br>Archives</a>

  </li>
        
        
        
          
          <li class="menu-item menu-item-about">

    
    
    
      
    

    

    <a href="/about/" rel="section"><i class="menu-item-icon fa fa-fw fa-user"></i> <br>About</a>

  </li>
        
        
        
          
          <li class="menu-item menu-item-sitemap">

    
    
    
      
    

    

    <a href="/sitemap.xml" rel="section"><i class="menu-item-icon fa fa-fw fa-sitemap"></i> <br>Sitemap</a>

  </li>

      
      
        <li class="menu-item menu-item-search">
          
            <a href="javascript:;" class="popup-trigger">
          
            
              <i class="menu-item-icon fa fa-search fa-fw"></i> <br>Search</a>
        </li>
      
    </ul>
  

  
    

  

  
    <div class="site-search">
      
  <div class="popup search-popup local-search-popup">
  <div class="local-search-header clearfix">
    <span class="search-icon">
      <i class="fa fa-search"></i>
    </span>
    <span class="popup-btn-close">
      <i class="fa fa-times-circle"></i>
    </span>
    <div class="local-search-input-wrapper">
      <input autocomplete="off" placeholder="Searching..." spellcheck="false" type="text" id="local-search-input">
    </div>
  </div>
  <div id="local-search-result"></div>
</div>



    </div>
  
</nav>



  



</div>
    </header>

    


    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  

  <article class="post post-type-normal" itemscope itemtype="http://schema.org/Article">
  
  
  
  <div class="post-block">
    <link itemprop="mainEntityOfPage" href="https://moonclearner.cn/python/libDescription.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="moonclearner">
      <meta itemprop="description" content="moonclearner record code skill and my feeling">
      <meta itemprop="image" content="/images/avatar.gif">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="moonclearner page">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">python library description

              
            
          </h1>
        

        <div class="post-meta">
          <span class="post-time">

            
            
            

            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">Posted on</span>
              

              
                
              

              <time title="Created: 2021-07-18 19:28:32" itemprop="dateCreated datePublished" datetime="2021-07-18T19:28:32+08:00">2021-07-18</time>
            

            
              

              
                
                <span class="post-meta-divider">|</span>
                

                <span class="post-meta-item-icon">
                  <i class="fa fa-calendar-check-o"></i>
                </span>
                
                  <span class="post-meta-item-text">Edited on</span>
                
                <time title="Modified: 2020-01-07 18:50:17" itemprop="dateModified" datetime="2020-01-07T18:50:17+08:00">2020-01-07</time>
              
            
          </span>

          
            <span class="post-category">
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">In</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing"><a href="/categories/python/" itemprop="url" rel="index"><span itemprop="name">python</span></a></span>

                
                
              
            </span>
          

          
            
          

          
          

          

          
            <div class="post-symbolscount">
              

              
                <span class="post-meta-item-icon">
                  <i class="fa fa-file-word-o"></i>
                </span>
                
                  <span class="post-meta-item-text">Symbols count in article: </span>
                
                <span title="Symbols count in article">26k</span>
              

              
                <span class="post-meta-divider">|</span>
              

              
                <span class="post-meta-item-icon">
                  <i class="fa fa-clock-o"></i>
                </span>
                
                  <span class="post-meta-item-text">Reading time &asymp;</span>
                
                <span title="Reading time">23 mins.</span>
              
            </div>
          

          

        </div>
      </header>
    

    
    
    
    <div class="post-body" itemprop="articleBody">

      
      

      
        <h2 id="1、环境管理：管理-Python-版本和环境的工具。"><a href="#1、环境管理：管理-Python-版本和环境的工具。" class="headerlink" title="1、环境管理：管理 Python 版本和环境的工具。"></a>1、环境管理：管理 Python 版本和环境的工具。</h2><p>p – 非常简单的交互式 python 版本管理工具。<br>pyenv – 简单的 Python 版本管理工具。<br>Vex – 可以在虚拟环境中执行命令。<br>virtualenv – 创建独立 Python 环境的工具。<br>virtualenvwrapper– virtualenv 的一组扩展。</p>
<h2 id="2、包管理：管理包和依赖的工具。"><a href="#2、包管理：管理包和依赖的工具。" class="headerlink" title="2、包管理：管理包和依赖的工具。"></a>2、包管理：管理包和依赖的工具。</h2><p>pip – Python 包和依赖关系管理工具。<br>pip-tools – 保证 Python 包依赖关系更新的一组工具。<br>conda – 跨平台，Python 二进制包管理工具。<br>Curdling – 管理 Python 包的命令行工具。<br>wheel – Python 分发的新标准，意在取代 eggs。</p>
<h2 id="3、包仓库：本地-PyPI-仓库服务和代理。"><a href="#3、包仓库：本地-PyPI-仓库服务和代理。" class="headerlink" title="3、包仓库：本地 PyPI 仓库服务和代理。"></a>3、包仓库：本地 PyPI 仓库服务和代理。</h2><p>warehouse – 下一代 PyPI。<br>Warehouse bandersnatch – PyPA 提供的 PyPI 镜像工具。<br>devpi – PyPI 服务和打包/测试/分发工具。<br>localshop – 本地 PyPI 服务（自定义包并且自动对 PyPI 镜像）。</p>
<h2 id="4、分发：打包为可执行文件以便分发。"><a href="#4、分发：打包为可执行文件以便分发。" class="headerlink" title="4、分发：打包为可执行文件以便分发。"></a>4、分发：打包为可执行文件以便分发。</h2><p>PyInstaller – 将 Python 程序转换成独立的执行文件（跨平台）。<br>dh-virtualenv – 构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。<br>Nuitka – 将脚本、模块、包编译成可执行文件或扩展模块。<br>py2app – 将 Python 脚本变为独立软件包（Mac OS X）。<br>py2exe – 将 Python 脚本变为独立软件包（Windows）。<br>pynsist – 一个用来创建 Windows 安装程序的工具，可以在安装程序中打包 Python本身。</p>
<h2 id="5、构建工具：将源码编译成软件。"><a href="#5、构建工具：将源码编译成软件。" class="headerlink" title="5、构建工具：将源码编译成软件。"></a>5、构建工具：将源码编译成软件。</h2><p>buildout – 一个构建系统，从多个组件来创建，组装和部署应用。<br>BitBake – 针对嵌入式 Linux 的类似 make 的构建工具。<br>fabricate – 对任何语言自动找到依赖关系的构建工具。<br>PlatformIO – 多平台命令行构建工具。<br>PyBuilder – 纯 Python 实现的持续化构建工具。<br>SCons – 软件构建工具。</p>
<h2 id="6、交互式解析器：交互式-Python-解析器。"><a href="#6、交互式解析器：交互式-Python-解析器。" class="headerlink" title="6、交互式解析器：交互式 Python 解析器。"></a>6、交互式解析器：交互式 Python 解析器。</h2><p>IPython – 功能丰富的工具，非常有效的使用交互式 Python。<br>bpython– 界面丰富的 Python 解析器。<br>ptpython – 高级交互式Python解析器， 构建于python-prompt-toolkit 之上。</p>
<h2 id="7、文件：文件管理和-MIME（多用途的网际邮件扩充协议）类型检测。"><a href="#7、文件：文件管理和-MIME（多用途的网际邮件扩充协议）类型检测。" class="headerlink" title="7、文件：文件管理和 MIME（多用途的网际邮件扩充协议）类型检测。"></a>7、文件：文件管理和 MIME（多用途的网际邮件扩充协议）类型检测。</h2><p>imghdr – （Python 标准库）检测图片类型。<br>mimetypes – （Python 标准库）将文件名映射为 MIME 类型。<br>path.py – 对 os.path 进行封装的模块。<br>pathlib – （Python3.4+ 标准库）跨平台的、面向对象的路径操作库。<br>python-magic– 文件类型检测的第三方库 libmagic 的 Python 接口。<br>Unipath– 用面向对象的方式操作文件和目录<br>watchdog – 管理文件系统事件的 API 和 shell 工具</p>
<h2 id="8、日期和时间：操作日期和时间的类库。"><a href="#8、日期和时间：操作日期和时间的类库。" class="headerlink" title="8、日期和时间：操作日期和时间的类库。"></a>8、日期和时间：操作日期和时间的类库。</h2><p>arrow– 更好的 Python 日期时间操作类库。<br>Chronyk – Python 3 的类库，用于解析手写格式的时间和日期。<br>dateutil – Python datetime 模块的扩展。<br>delorean– 解决 Python 中有关日期处理的棘手问题的库。<br>moment – 一个用来处理时间和日期的Python库。灵感来自于Moment.js。<br>PyTime – 一个简单易用的Python模块，用于通过字符串来操作日期/时间。<br>pytz – 现代以及历史版本的世界时区定义。将时区数据库引入Python。<br>when.py – 提供用户友好的函数来帮助用户进行常用的日期和时间操作。</p>
<h2 id="9、文本处理：用于解析和操作文本的库。"><a href="#9、文本处理：用于解析和操作文本的库。" class="headerlink" title="9、文本处理：用于解析和操作文本的库。"></a>9、文本处理：用于解析和操作文本的库。</h2><h3 id="9-1通用"><a href="#9-1通用" class="headerlink" title="9.1通用"></a>9.1通用</h3><p>chardet – 字符编码检测器，兼容 Python2 和 Python3。<br>difflib – (Python 标准库)帮助我们进行差异化比较。<br>ftfy – 让Unicode文本更完整更连贯。<br>fuzzywuzzy – 模糊字符串匹配。<br>Levenshtein – 快速计算编辑距离以及字符串的相似度。<br>pangu.py – 在中日韩语字符和数字字母之间添加空格。<br>pyfiglet -figlet 的 Python实现。<br>shortuuid – 一个生成器库，用以生成简洁的，明白的，URL 安全的 UUID。<br>unidecode – Unicode 文本的 ASCII 转换形式 。<br>uniout – 打印可读的字符，而不是转义的字符串。<br>xpinyin – 一个用于把汉字转换为拼音的库。</p>
<h3 id="9-2-Slug化"><a href="#9-2-Slug化" class="headerlink" title="9.2 Slug化"></a>9.2 Slug化</h3><p>awesome-slugify – 一个 Python slug 化库，可以保持 Unicode。<br>python-slugify – Python slug 化库，可以把 unicode 转化为 ASCII。<br>unicode-slugify – 一个 slug 工具，可以生成 unicode slugs ,需要依赖 Django 。</p>
<h3 id="9-3-解析器"><a href="#9-3-解析器" class="headerlink" title="9.3 解析器"></a>9.3 解析器</h3><p>phonenumbers – 解析，格式化，储存，验证电话号码。<br>PLY – lex 和 yacc 解析工具的 Python 实现。<br>Pygments – 通用语法高亮工具。<br>pyparsing – 生成通用解析器的框架。<br>python-nameparser – 把一个人名分解为几个独立的部分。<br>python-user-agents – 浏览器 user agent 解析器。<br>sqlparse – 一个无验证的 SQL 解析器。</p>
<p>10、特殊文本格式处理：一些用来解析和操作特殊文本格式的库。<br>10.1 通用<br>tablib – 一个用来处理中表格数据的模块。<br>10.2 Office<br>Marmir – 把输入的Python 数据结构转换为电子表单。<br>openpyxl – 一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库。<br>python-docx – 读取，查询以及修改 Microsoft Word 2007/2008 docx 文件。<br>unoconv – 在 LibreOffice/OpenOffice 支持的任意文件格式之间进行转换。<br>XlsxWriter – 一个用于创建 Excel .xlsx 文件的 Python 模块。<br>xlwings – 一个使得在 Excel 中方便调用 Python 的库（反之亦然），基于 BSD 协议。<br>xlwt / xlrd – 读写 Excel 文件的数据和格式信息。<br>relatorio – 模板化OpenDocument 文件。<br>10.3 PDF<br>PDFMiner – 一个用于从PDF文档中抽取信息的工具。<br>PyPDF2 – 一个可以分割，合并和转换 PDF 页面的库。<br>ReportLab – 快速创建富文本 PDF 文档。<br>10.4 Markdown<br>Mistune – 快速并且功能齐全的纯 Python 实现的 Markdown 解析器。<br>Python-Markdown – John Gruber’s Markdown 的 Python 版实现。<br>10.5 YAML<br>PyYAML – Python 版本的 YAML 解析器。<br>10.6 CSV<br>csvkit – 用于转换和操作 CSV 的工具。<br>10.7 Archive<br>unp – 一个用来方便解包归档文件的命令行工具。</p>
<p>11、自然语言处理：用来处理人类语言的库。<br>NLTK – 一个先进的平台，用以构建处理人类语言数据的 Python 程序。<br>jieba – 中文分词工具。<br>langid.py – 独立的语言识别系统。<br>Pattern – Python 网络信息挖掘模块。<br>SnowNLP – 一个用来处理中文文本的库。<br>TextBlob – 为进行普通自然语言处理任务提供一致的 API。<br>TextGrocery – 一简单高效的短文本分类工具，基于 LibLinear 和 Jieba。</p>
<p>12、文档：用以生成项目文档的库。<br>Sphinx – Python 文档生成器。<br>awesome-sphinxdoc<br>MkDocs – 对 Markdown 友好的文档生成器。<br>pdoc – 一个可以替换Epydoc 的库，可以自动生成 Python 库的 API 文档。<br>Pycco – 文学编程（literate-programming）风格的文档生成器。</p>
<p>13、配置：用来保存和解析配置的库。<br>config – logging 模块作者写的分级配置模块。<br>ConfigObj – INI 文件解析器，带验证功能。<br>ConfigParser – (Python 标准库) INI 文件解析器。<br>profig – 通过多种格式进行配置，具有数值转换功能。<br>python-decouple – 将设置和代码完全隔离。</p>
<p>14、命令行工具：用于创建命令行程序的库。<br>14.1 命令行程序开发<br>cement – Python 的命令行程序框架。<br>click – 一个通过组合的方式来创建精美命令行界面的包。<br>cliff – 一个用于创建命令行程序的框架，可以创建具有多层命令的命令行程序。<br>clint – Python 命令行程序工具。<br>colorama – 跨平台彩色终端文本。<br>docopt – Python 风格的命令行参数解析器。<br>Gooey – 一条命令，将命令行程序变成一个 GUI 程序。<br>python-prompt-toolkit – 一个用于构建强大的交互式命令行程序的库。<br>14.2 生产力工具<br>aws-cli – Amazon Web Services 的通用命令行界面。<br>bashplotlib – 在终端中进行基本绘图。<br>caniusepython3 – 判断是哪个项目妨碍你你移植到 Python 3。<br>cookiecutter – 从 cookiecutters（项目模板）创建项目的一个命令行工具。<br>doitlive – 一个用来在终端中进行现场演示的工具。<br>howdoi – 通过命令行获取即时的编程问题解答。<br>httpie – 一个命令行HTTP 客户端，cURL 的替代品，易用性更好。<br>PathPicker – 从bash输出中选出文件。<br>percol – 向UNIX shell 传统管道概念中加入交互式选择功能。<br>SAWS – 一个加强版的 AWS 命令行。<br>thefuck – 修正你之前的命令行指令。<br>mycli – 一个 MySQL 命令行客户端，具有自动补全和语法高亮功能。<br>pgcli – Postgres 命令行工具，具有自动补全和语法高亮功能。</p>
<p>15、下载器：用来进行下载的库。<br>s3cmd – 一个用来管理Amazon S3 和 CloudFront 的命令行工具。<br>s4cmd – 超级 S3 命令行工具，性能更加强劲。<br>you-get – 一个 YouTube/Youku/Niconico 视频下载器，使用 Python3 编写。<br>youtube-dl – 一个小巧的命令行程序，用来下载 YouTube 视频。</p>
<p>16、图像处理：用来操作图像的库。<br>pillow – Pillow 是一个更加易用版的 PIL。<br>hmap – 图像直方图映射。<br>imgSeek – 一个使用视觉相似性搜索一组图片集合的项目。<br>nude.py – 裸体检测。<br>pyBarcode – 不借助 PIL 库在 Python 程序中生成条形码。<br>pygram – 类似 Instagram 的图像滤镜。<br>python-qrcode – 一个纯 Python 实现的二维码生成器。<br>Quads – 基于四叉树的计算机艺术。<br>scikit-image – 一个用于（科学）图像处理的 Python 库。<br>thumbor – 一个小型图像服务，具有剪裁，尺寸重设和翻转功能。<br>wand – MagickWand的Python 绑定。MagickWand 是 ImageMagick的 C API 。</p>
<p>17、OCR：光学字符识别库。<br>pyocr – Tesseract 和 Cuneiform 的一个封装(wrapper)。<br>pytesseract – Google Tesseract OCR 的另一个封装(wrapper)。<br>python-tesseract – Google Tesseract OCR 的一个包装类。</p>
<p>18、音频：用来操作音频的库。<br>audiolazy -Python 的数字信号处理包。<br>audioread – 交叉库 (GStreamer + Core Audio + MAD + FFmpeg) 音频解码。<br>beets – 一个音乐库管理工具及 MusicBrainz 标签添加工具<br>dejavu – 音频指纹提取和识别<br>django-elastic-transcoder – Django + Amazon Elastic Transcoder。<br>eyeD3 – 一个用来操作音频文件的工具，具体来讲就是包含 ID3 元信息的 MP3 文件。<br>id3reader – 一个用来读取 MP3 元数据的 Python 模块。<br>m3u8 – 一个用来解析 m3u8 文件的模块。<br>mutagen – 一个用来处理音频元数据的 Python 模块。<br>pydub – 通过简单、简洁的高层接口来操作音频文件。<br>pyechonest – Echo Nest API 的 Python 客户端<br>talkbox – 一个用来处理演讲/信号的 Python 库<br>TimeSide – 开源 web 音频处理框架。<br>tinytag – 一个用来读取MP3, OGG, FLAC 以及 Wave 文件音乐元数据的库。<br>mingus – 一个高级音乐理论和曲谱包，支持 MIDI 文件和回放功能。</p>
<p>19、Video：用来操作视频和GIF的库。<br>moviepy – 一个用来进行基于脚本的视频编辑模块，适用于多种格式，包括动图 GIFs。<br>scikit-video – SciPy 视频处理常用程序。</p>
<p>20、地理位置：地理编码地址以及用来处理经纬度的库。<br>GeoDjango – 世界级地理图形 web 框架。<br>GeoIP – MaxMind GeoIP Legacy 数据库的 Python API。<br>geojson – GeoJSON 的 Python 绑定及工具。<br>geopy – Python 地址编码工具箱。<br>pygeoip – 纯 Python GeoIP API。<br>django-countries – 一个 Django 应用程序，提供用于表格的国家选择功能，国旗图标静态文件以及模型中的国家字段。</p>
<p>21、HTTP：使用HTTP的库。<br>requests – 人性化的HTTP请求库。<br>grequests – requests 库 + gevent ，用于异步 HTTP 请求.<br>httplib2 – 全面的 HTTP 客户端库。<br>treq – 类似 requests 的Python API 构建于 Twisted HTTP 客户端之上。<br>urllib3 – 一个具有线程安全连接池，支持文件 post，清晰友好的 HTTP 库。</p>
<p>22、数据库：Python实现的数据库。<br>pickleDB – 一个简单，轻量级键值储存数据库。<br>PipelineDB – 流式 SQL 数据库。<br>TinyDB – 一个微型的，面向文档型数据库。<br>ZODB – 一个 Python 原生对象数据库。一个键值和对象图数据库。</p>
<p>23、数据库驱动：用来连接和操作数据库的库。<br>MySQL – awesome-mysql系列<br>mysql-python – Python 的 MySQL 数据库连接器。<br>mysqlclient – mysql-python 分支，支持 Python 3。<br>oursql – 一个更好的 MySQL 连接器，支持原生预编译指令和 BLOBs.<br>PyMySQL – 纯 Python MySQL 驱动，兼容 mysql-python。</p>
<p>24、PostgreSQL<br>psycopg2 – Python 中最流行的 PostgreSQL 适配器。<br>queries – psycopg2 库的封装，用来和 PostgreSQL 进行交互。<br>txpostgres – 基于 Twisted 的异步 PostgreSQL 驱动。<br>其他关系型数据库<br>apsw – 另一个 Python SQLite封装。<br>dataset – 在数据库中存储Python字典 – 可以协同SQLite，MySQL，和 PostgreSQL工作。<br>pymssql– 一个简单的Microsoft SQL Server数据库接口。<br>NoSQL 数据库<br>cassandra-python-driver – Cassandra 的 Python 驱动。<br>HappyBase – 一个为 Apache HBase 设计的，对开发者友好的库。<br>Plyvel – 一个快速且功能丰富的 LevelDB 的 Python 接口。<br>py2neo – Neo4j restful 接口的Python 封装客户端。<br>pycassa – Cassandra 的 Python Thrift 驱动。<br>PyMongo – MongoDB 的官方 Python 客户端。<br>redis-py – Redis 的 Python 客户端。<br>telephus – 基于 Twisted 的 Cassandra 客户端。<br>txRedis – 基于 Twisted 的 Redis 客户端。<br>ORM：实现对象关系映射或数据映射技术的库。<br>关系型数据库<br>awesome-sqlalchemy系列<br>Django Models – Django 的一部分。<br>SQLAlchemy – Python SQL 工具以及对象关系映射工具。<br>Peewee – 一个小巧，富有表达力的 ORM。<br>PonyORM – 提供面向生成器的 SQL 接口的 ORM。<br>python-sql – 编写 Python 风格的 SQL 查询。<br>NoSQL 数据库<br>django-mongodb-engine – Django MongoDB 后端。<br>PynamoDB – Amazon DynamoDB 的一个 Python 风格接口。<br>flywheel – Amazon DynamoDB 的对象映射工具。<br>MongoEngine – 一个Python 对象文档映射工具，用于 MongoDB。<br>hot-redis – 为 Redis 提供 Python 丰富的数据类型。<br>redisco – 一个 Python 库，提供可以持续存在在 Redis 中的简单模型和容器。</p>
<p>25、其他<br>butterdb – Google Drive 电子表格的 Python ORM。</p>
<p>26、Web 框架<br>全栈 web 框架。<br>Django – Python 界最流行的 web 框架。<br>awesome-django系列<br>Flask – 一个 Python 微型框架。<br>awesome-flask系列<br>Pyramid – 一个小巧，快速，接地气的开源Python web 框架。<br>awesome-pyramid系列<br>Bottle – 一个快速小巧，轻量级的 WSGI 微型 web 框架。<br>CherryPy – 一个极简的 Python web 框架，服从 HTTP/1.1 协议且具有WSGI 线程池。<br>TurboGears – 一个可以扩展为全栈解决方案的微型框架。<br>web.py – 一个 Python 的 web 框架，既简单，又强大。<br>web2py – 一个全栈 web 框架和平台，专注于简单易用。<br>Tornado – 一个web 框架和异步网络库。</p>
<p>27、权限：允许或拒绝用户访问数据或功能的库。<br>Carteblanche – Module to align code with thoughts of users and designers. Also magically handles navigation and permissions.<br>django-guardian – Django 1.2+ 实现了单个对象权限。<br>django-rules – 一个小巧但是强大的应用，提供对象级别的权限管理，且不需要使用数据库。</p>
<p>28、CMS:内容管理系统<br>django-cms – 一个开源的，企业级 CMS，基于 Django。<br>djedi-cms – 一个轻量级但却非常强大的 Django CMS ，考虑到了插件，内联编辑以及性能。<br>FeinCMS – 基于 Django 构建的最先进的内容管理系统之一。<br>Kotti – 一个高级的，Python 范的 web 应用框架，基于 Pyramid 构建。<br>Mezzanine – 一个强大的，持续的，灵活的内容管理平台。<br>Opps – 一个为杂志，报纸网站以及大流量门户网站设计的 CMS 平台，基于 Django。<br>Plone – 一个构建于开源应用服务器 Zope 之上的 CMS。<br>Quokka – 灵活，可扩展的小型 CMS，基于 Flask 和 MongoDB。<br>Wagtail – 一个 Django 内容管理系统。<br>Widgy – 最新的 CMS 框架，基于 Django。</p>
<p>29、电子商务:用于电子商务以及支付的框架和库。<br>django-oscar – 一个用于 Django 的开源的电子商务框架。<br>django-shop – 一个基于 Django 的店铺系统。<br>Cartridge – 一个基于 Mezzanine 构建的购物车应用。<br>shoop – 一个基于 Django 的开源电子商务平台。<br>alipay – 非官方的 Python 支付宝 API。<br>merchant – 一个可以接收来自多种支付平台支付的 Django 应用。<br>money – 货币类库with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.<br>python-currencies – 显示货币格式以及它的数值。</p>
<p>30、RESTful API:用来开发RESTful APIs的库<br>30.1 Django<br>django-rest-framework – 一个强大灵活的工具，用来构建 web API。<br>django-tastypie – 为Django 应用开发API。<br>django-formapi – 为 Django 的表单验证，创建 JSON APIs 。<br>30.2 Flask<br>flask-api – 为 flask 开发的，可浏览 Web APIs 。<br>flask-restful – 为 flask 快速创建REST APIs 。<br>flask-restless – 为 SQLAlchemy 定义的数据库模型创建 RESTful APIs 。<br>flask-api-utils – 为 Flask 处理 API 表示和验证。<br>eve – REST API 框架，由 Flask, MongoDB 等驱动。<br>30.3 Pyramid<br>cornice – 一个Pyramid 的 REST 框架 。<br>30.4 与框架无关的<br>falcon – 一个用来建立云 API 和 web app 后端的噶性能框架。<br>sandman – 为现存的数据库驱动系统自动创建 REST APIs 。<br>restless – 框架无关的 REST 框架 ，基于从 Tastypie 学到的知识。<br>ripozo – 快速创建 REST/HATEOAS/Hypermedia APIs。</p>
<p>31、验证:实现验证方案的库。<br>31.1 OAuth<br>Authomatic – 简单但是强大的框架，身份验证/授权客户端。<br>django-allauth – Django 的验证应用。<br>django-oauth-toolkit – 为 Django 用户准备的 OAuth2。<br>django-oauth2-provider – 为 Django 应用提供 OAuth2 接入。<br>Flask-OAuthlib – OAuth 1.0/a, 2.0 客户端实现，供 Flask 使用。<br>OAuthLib – 一个 OAuth 请求-签名逻辑通用、 完整的实现。<br>python-oauth2 – 一个完全测试的抽象接口。用来创建 OAuth 客户端和服务端。<br>python-social-auth – 一个设置简单的社会化验证方式。<br>rauth – OAuth 1.0/a, 2.0, 和 Ofly 的 Python 库。<br>sanction – 一个超级简单的OAuth2 客户端实现。<br>31.2 其他<br>jose – JavaScript 对象签名和加密草案的实现。<br>PyJWT – JSON Web 令牌草案 01。<br>python-jws – JSON Web 签名草案 02 的实现。<br>python-jwt – 一个用来生成和验证 JSON Web 令牌的模块。</p>
<p>32、模板引擎：模板生成和词法解析的库和工具。<br>Jinja2 – 一个现代的，对设计师友好的模板引擎。<br>Chameleon – 一个 HTML/XML 模板引擎。 模仿了 ZPT（Zope Page Templates）, 进行了速度上的优化。<br>Genshi – Python 模板工具，用以生成 web 感知的结果。<br>Mako – Python 平台的超高速轻量级模板。</p>
<p>33、Queue：处理事件以及任务队列的库。<br>celery – 一个异步任务队列/作业队列，基于分布式消息传递。<br>huey – 小型多线程任务队列。<br>mrq – Mr. Queue -一个 Python 的分布式 worker 任务队列， 使用 Redis 和 gevent。<br>rq – 简单的 Python 作业队列。<br>simpleq – 一个简单的，可无限扩张的，基于亚马逊 SQS 的队列。</p>
<p>34、搜索：对数据进行索引和执行搜索查询的库和软件。<br>django-haystack – Django 模块化搜索。<br>elasticsearch-py – Elasticsearch 的官方底层 Python 客户端。<br>elasticsearch-dsl-py -Elasticsearch 的官方高级 Python 客户端。<br>solrpy – solr的 Python 客户端。<br>Whoosh – 一个快速的纯 Python 搜索引擎库。</p>
<p>35、动态消息：用来创建用户活动的库。<br>django-activity-stream – 从你的站点行为中生成通用活动信息流。<br>Stream-Framework – 使用 Cassandra 和 Redis 创建动态消息和通知系统。</p>
<p>36、资源管理：管理、压缩、缩小网站资源的工具。<br>django-compressor – 将链接和内联的 JavaScript 或 CSS 压缩到一个单独的缓存文件中。<br>django-storages – 一个针对 Django 的自定义存储后端的工具集合。<br>fanstatic – 打包、优化，并且把静态文件依赖作为 Python 的包来提供。<br>File Conveyor – 一个后台驻留的程序，用来发现和同步文件到 CDNs, S3 和 FTP。<br>Flask-Assets – 帮你将 web 资源整合到你的 Flask app 中。<br>jinja-assets-compressor – 一个 Jinja 扩展，用来编译和压缩你的资源。<br>webassets – 为你的静态资源打包、优化和管理生成独一无二的缓存 URL。</p>
<p>37、缓存：缓存数据的库。<br>Beaker – 一个缓存和会话库，可以用在 web 应用和独立 Python脚本和应用上。<br>django-cache-machine – Django 模型的自动缓存和失效。<br>django-cacheops– 具有自动颗粒化事件驱动失效功能的 ORM。<br>django-viewlet – 渲染模板，同时具有额外的缓存控制功能。<br>dogpile.cache – dogpile.cache 是 Beaker 的下一代替代品，由同一作者开发。<br>HermesCache – Python 缓存库，具有基于标签的失效和 dogpile effect 保护功能。<br>johnny-cache – django应用缓存框架。<br>pylibmc – libmemcached 接口的 Python 封装。</p>
<p>38、电子邮件：用来发送和解析电子邮件的库。<br>django-celery-ses – 带有 AWS SES 和 Celery 的 Django email 后端。<br>envelopes – 供人类使用的电子邮件库。<br>flanker – 一个 email 地址和 Mime 解析库。<br>imbox – Python IMAP 库<br>inbox.py – Python SMTP 服务器。<br>inbox – 一个开源电子邮件工具箱。<br>lamson – Python 风格的 SMTP 应用服务器。<br>mailjet – Mailjet API 实现，用来提供批量发送邮件，统计等功能。<br>marrow.mailer – 高性能可扩展邮件分发框架。<br>modoboa – 一个邮件托管和管理平台，具有现代的、简约的 Web UI。<br>pyzmail – 创建，发送和解析电子邮件。<br>Talon – Mailgun 库，用来抽取信息和签名。</p>
<p>39、国际化：用来进行国际化的库。<br>Babel – 一个Python 的国际化库。<br>Korean – 一个韩语词态库。</p>
<p>40、URL处理：解析URLs的库。<br>furl – 一个让处理 URL 更简单小型 Python 库。<br>purl – 一个简单的，不可变的URL类，具有简洁的 API 来进行询问和处理。<br>pyshorteners – 一个纯 Python URL 缩短库。<br>shorturl– 生成短小 URL 和类似 bit.ly 短链的Python 实现。<br>webargs – 一个解析 HTTP 请求参数的库，内置对流行 web 框架的支持，包括 Flask, Django, Bottle, Tornado和 Pyramid。</p>
<p>41、HTML处理：处理 HTML和XML的库。<br>BeautifulSoup – 以 Python 风格的方式来对 HTML 或 XML 进行迭代，搜索和修改。<br>bleach – 一个基于白名单的 HTML 清理和文本链接库。<br>cssutils – 一个 Python 的 CSS 库。<br>html5lib – 一个兼容标准的 HTML 文档和片段解析及序列化库。<br>lxml – 一个非常快速，简单易用，功能齐全的库，用来处理 HTML 和 XML。<br>MarkupSafe – 为Python 实现 XML/HTML/XHTML 标记安全字符串。<br>pyquery – 一个解析 HTML 的库，类似 jQuery。<br>untangle – 将XML文档转换为Python对象，使其可以方便的访问。<br>xhtml2pdf – HTML/CSS 转 PDF 工具。<br>xmltodict – 像处理 JSON 一样处理 XML。</p>
<p>42、网络站点爬取：爬取网络站点的库。<br>Scrapy – 一个快速高级的屏幕爬取及网页采集框架。<br>cola – 一个分布式爬虫框架。<br>Demiurge – 基于PyQuery 的爬虫微型框架。<br>feedparser – 通用 feed 解析器。<br>Grab – 站点爬取框架。<br>MechanicalSoup – 用于自动和网络站点交互的 Python 库。<br>portia – Scrapy 可视化爬取。<br>pyspider – 一个强大的爬虫系统。<br>RoboBrowser – 一个简单的，Python 风格的库，用来浏览网站，而不需要一个独立安装的浏览器。</p>
<p>43、网页内容提取：用于进行网页内容提取的库。<br>Haul – 一个可以扩展的图像爬取工具。<br>html2text – 将 HTML 转换为 Markdown 格式文本<br>lassie – 人性化的网页内容检索库。<br>micawber -一个小型网页内容提取库，用来从 URLs 提取富内容。<br>newspaper – 使用 Python 进行新闻提取，文章提取以及内容策展。<br>opengraph – 一个用来解析开放内容协议(Open Graph Protocol)的 Python模块。<br>python-goose – HTML内容/文章提取器。<br>python-readability– arc90 公司 readability 工具的 Python 高速端口<br>sanitize – 为杂乱的数据世界带来调理性。<br>sumy – 一个为文本文件和 HTML 页面进行自动摘要的模块。<br>textract – 从任何格式的文档中提取文本，Word，PowerPoint，PDFs 等等。</p>
<p>44、表单：进行表单操作的库。<br>Deform – Python HTML 表单生成库，受到了 formish 表单生成库的启发。<br>django-bootstrap3– 集成了 Bootstrap 3 的 Django。<br>django-crispy-forms – 一个 Django 应用，他可以让你以一种非常优雅且 DRY（Don’t repeat yourself） 的方式来创建美观的表单。<br>django-remote-forms– 一个平台独立的 Django 表单序列化工具。<br>WTForms – 一个灵活的表单验证和呈现库。<br>WTForms-JSON– 一个 WTForms 扩展，用来处理 JSON 数据。</p>
<p>45、数据验证：数据验证库，多用于表单验证。<br>Cerberus – A mappings-validator with a variety of rules, normalization-features and simple customization that uses a pythonic schema-definition.<br>colander – 一个用于对从 XML, JSON，HTML 表单获取的数据或其他同样简单的序列化数据进行验证和反序列化的系统。<br>kmatch – 一种用于匹配/验证/筛选 Python 字典的语言。<br>schema -一个用于对 Python 数据结构进行验证的库。<br>Schematics – 数据结构验证。<br>valideer – 轻量级可扩展的数据验证和适配库。<br>voluptuous – 一个 Python 数据验证库。主要是为了验证传入 Python的 JSON，YAML 等数据。</p>
<p>46、反垃圾技术：帮助你和电子垃圾进行战斗的库。<br>django-simple-captcha – 一个简单、高度可定制的Django 应用，可以为任何Django表单添加验证码。<br>django-simple-spam-blocker– 一个用于Django的简单的电子垃圾屏蔽工具。</p>
<p>47、标记：用来进行标记的库。<br>django-taggit – 简单的 Django 标记工具。</p>
<p>48、管理面板：管理界面库。<br>Ajenti – 一个你的服务器值得拥有的管理面板。<br>django-suit – Django 管理界面的一个替代品 (仅对于非商业用途是免费的)。<br>django-xadmin – Django admin 的一个替代品，具有很多不错的功能。<br>flask-admin – 一个用于 Flask 的简单可扩展的管理界面框架。<br>flower – 一个对 Celery 集群进行实时监控和提供 web 管理界面的工具。<br>Grappelli – Django 管理界面的一个漂亮的皮肤。<br>Wooey – 一个 Django 应用，可以为 Python 脚本创建 web 用户界面。</p>
<p>49、静态站点生成器：静态站点生成器是一个软件，它把文本和模板作为输入，然后输出HTML文件。<br>Pelican – 使用 Markdown 或 ReST 来处理内容， Jinja 2 来制作主题。支持 DVCS, Disqus.。AGPL 许可。<br>Cactus – 为设计师设计的静态站点生成器。<br>Hyde – 基于 Jinja2 的静态站点生成器。<br>Nikola – 一个静态网站和博客生成器。<br>Tinkerer – Tinkerer 是一个博客引擎/静态站点生成器，由Sphinx驱动。<br>Lektor – 一个简单易用的静态 CMS 和博客引擎。</p>
<p>50、进程：操作系统进程启动及通信库。<br>envoy – 比 Python subprocess 模块更人性化。<br>sarge – 另一 种 subprocess 模块的封装。<br>sh – 一个完备的 subprocess 替代库。</p>
<p>51、并发和并行：用以进行并发和并行操作的库。<br>multiprocessing – (Python 标准库) 基于进程的“线程”接口。<br>threading – (Python 标准库)更高层的线程接口。<br>eventlet – 支持 WSGI 的异步框架。<br>gevent – 一个基于协程的 Python 网络库，使用greenlet。<br>Tomorrow -用于产生异步代码的神奇的装饰器语法实现。</p>
<p>52、网络：用于网络编程的库。<br>asyncio – (Python 标准库) 异步 I/O, 事件循环, 协程以及任务。<br>Twisted – 一个事件驱动的网络引擎。<br>pulsar – 事件驱动的并发框架。<br>diesel – 基于Greenlet 的事件 I/O 框架。<br>pyzmq – 一个 ZeroMQ 消息库的 Python 封装。<br>txZMQ – 基于 Twisted 的 ZeroMQ 消息库的 Python 封装。</p>
<p>53、WebSocket：帮助使用WebSocket的库。<br>AutobahnPython – 给 Python 、使用的 WebSocket &amp; WAMP 基于 Twisted 和 asyncio。<br>Crossbar – 开源统一应用路由(Websocket &amp; WAMP for Python on Autobahn).<br>django-socketio – 给 Django 用的 WebSockets。<br>WebSocket-for-Python – 为Python2/3 以及 PyPy 编写的 WebSocket 客户端和服务器库。</p>
<p>54、WSGI 服务器：兼容 WSGI 的 web 服务器<br>gunicorn – Pre-forked, 部分是由 C 语言编写的。<br>uwsgi – uwsgi 项目的目的是开发一组全栈工具，用来建立托管服务， 由 C 语言编写。<br>bjoern – 异步，非常快速，由 C 语言编写。<br>fapws3 – 异步 (仅对于网络端)，由 C 语言编写。<br>meinheld – 异步，部分是由 C 语言编写的。<br>netius – 异步，非常快速。<br>paste – 多线程，稳定，久经考验。<br>rocket – 多线程。<br>waitress – 多线程, 是它驱动着 Pyramid 框架。<br>Werkzeug – 一个 WSGI 工具库，驱动着 Flask ，而且可以很方便大嵌入到你的项目中去。</p>
<p>55、RPC 服务器：兼容 RPC 的服务器。<br>SimpleJSONRPCServer – 这个库是 JSON-RPC 规范的一个实现。<br>SimpleXMLRPCServer – (Python 标准库) 简单的 XML-RPC 服务器实现，单线程。<br>zeroRPC – zerorpc 是一个灵活的 RPC 实现，基于 ZeroMQ 和 MessagePack。</p>
<p>56、密码学：<br>cryptography – 这个软件包意在提供密码学基本内容和方法提供给 Python 开发者。<br>hashids – 在 Python 中实现 hashids 。<br>Paramiko – SSHv2 协议的 Python (2.6+, 3.3+) ，提供客户端和服务端的功能。<br>Passlib – 安全密码存储／哈希库，<br>PyCrypto – Python 密码学工具箱。<br>PyNacl – 网络和密码学(NaCl) 库的 Python 绑定。</p>
<p>57、图形用户界面：用来创建图形用户界面程序的库。<br>curses – 内建的 ncurses 封装，用来创建终端图形用户界面。<br>enaml – 使用类似 QML 的Declaratic语法来创建美观的用户界面。<br>kivy – 一个用来创建自然用户交互（NUI）应用程序的库，可以运行在 Windows, Linux, Mac OS X, Android 以及 iOS平台上。<br>pyglet – 一个Python 的跨平台窗口及多媒体库。<br>PyQt – 跨平台用户界面框架 Qt 的 Python 绑定 ，支持Qt v4 和 Qt v5。<br>PySide – P跨平台用户界面框架 Qt 的 Python 绑定 ，支持Qt v4。<br>Tkinter – Tkinter 是 Python GUI 的一个事实标准库。<br>Toga – 一个 Python 原生的, 操作系统原生的 GUI 工具包。<br>urwid – 一个用来创建终端 GUI 应用的库，支持组件，事件和丰富的色彩等。<br>PyGObject – GLib/GObject/GIO/GTK+ (GTK+3) 的 Python 绑定<br>Flexx – Flexx 是一个纯 Python 语言编写的用来创建 GUI 程序的工具集，它使用 web 技术进行界面的展示。</p>
<p>58、游戏开发：超赞的游戏开发库。<br>Cocos2d – cocos2d 是一个用来开发 2D 游戏， 示例和其他图形/交互应用的框架。基于 pyglet。<br>Panda3D – 由迪士尼开发的 3D 游戏引擎，并由卡内基梅陇娱乐技术中心负责维护。使用C++编写, 针对 Python 进行了完全的封装。<br>Pygame – Pygame 是一组 Python 模块，用来编写游戏。<br>PyOgre – Ogre 3D 渲染引擎的 Python 绑定，可以用来开发游戏和仿真程序等任何 3D 应用。<br>PyOpenGL – OpenGL 的 Python 绑定及其相关 APIs。<br>PySDL2 – SDL2 库的封装，基于 ctypes。<br>RenPy – 一个视觉小说（visual novel）引擎。</p>
<p>59、日志：用来生成和操作日志的库。<br>logging – (Python 标准库) 为 Python 提供日志功能。<br>logbook – Logging 库的替代品。<br>Eliot – 为复杂的和分布式系统创建日志。<br>Raven – Sentry的 Python 客户端。<br>Sentry – 实时记录和收集日志的服务器。</p>
<p>60、Testing：进行代码库测试和生成测试数据的库。<br>60.1测试框架<br>unittest – (Python 标准库) 单元测试框架。<br>nose – nose 扩展了 unittest 的功能。<br>contexts – 一个 Python 3.3+ 的 BDD 框架。受到C# –Machine.Specifications的启发。<br>hypothesis – Hypothesis 是一个基于先进的 Quickcheck 风格特性的测试库。<br>mamba – Python 的终极测试工具， 拥护BDD。<br>PyAutoGUI – PyAutoGUI 是一个人性化的跨平台 GUI 自动测试模块。<br>pyshould– Should 风格的断言，基于 PyHamcrest。<br>pytest– 一个成熟的全功能 Python 测试工具。<br>green– 干净，多彩的测试工具。<br>pyvows– BDD 风格的测试工具，受Vows.js的启发。<br>Robot Framework – 一个通用的自动化测试框架。<br>60.2 Web 测试<br>Selenium – Selenium WebDriver 的 Python 绑定。<br>locust – 使用 Python 编写的，可扩展的用户加载测试工具。<br>sixpack – 一个和语言无关的 A/B 测试框架。<br>splinter – 开源的 web 应用测试工具。<br>60.3 Mock测试<br>mock – (Python 标准库) 一个用于伪造测试的库。<br>doublex – Python 的一个功能强大的 doubles 测试框架。<br>freezegun – 通过伪造日期模块来生成不同的时间。<br>httmock – 针对 Python 2.6+ 和 3.2+ 生成 伪造请求的库。<br>httpretty – Python 的 HTTP 请求 mock 工具。<br>responses – 伪造 Python 中的 requests 库的一个通用库。<br>VCR.py – 在你的测试中记录和重放 HTTP 交互。<br>60.4 对象工厂<br>factoryboy – 一个 Python 用的测试固件 (test fixtures) 替代库。<br>mixer – 另外一个测试固件 (test fixtures) 替代库，支持 Django, Flask, SQLAlchemy, Peewee 等。<br>modelmommy – 为 Django 测试创建随机固件</p>
<p>61、代码覆盖率<br>coverage – 代码覆盖率测量。</p>
<p>62、伪数据<br>faker – 一个 Python 库，用来生成伪数据。<br>fake2db – 伪数据库生成器。<br>radar – 生成随机的日期/时间。</p>
<p>63、错误处理<br>FuckIt.py – FuckIt.py 使用最先进的技术来保证你的 Python 代码无论对错都能继续运行。</p>
<p>64、代码分析和Lint工具：进行代码分析，解析和操作代码库的库和工具。<br>64.1 代码分析<br>code2flow – 把你的 Python 和 JavaScript 代码转换为流程图。<br>pycallgraph -这个库可以把你的Python 应用的流程(调用图)进行可视化。<br>pysonar2 – Python 类型推断和检索工具。<br>64.2 Lint工具<br>Flake8 – 模块化源码检查工具: pep8, pyflakes 以及 co。<br>Pylint – 一个完全可定制的源码分析器。<br>pylama – Python 和 JavaScript 的代码审查工具。</p>
<p>65、Debugging Tools：用来进行代码调试的库。<br>65.1 调试器<br>ipdb – IPython 启用的 pdb。<br>pudb – 全屏，基于控制台的 Python 调试器。<br>pyringe – 可以在 Python 进程中附加和注入代码的调试器。<br>wdb – 一个奇异的 web 调试器，通过 WebSockets 工作。<br>winpdb – 一个具有图形用户界面的 Python 调试器，可以进行远程调试，基于 rpdb2。<br>django-debug-toolbar – 为 Django 显示各种调试信息。<br>django-devserver – 一个 Django 运行服务器的替代品。<br>flask-debugtoolbar – django-debug-toolbar 的 flask 版。<br>65.2 性能分析器<br>lineprofiler – 逐行性能分析。<br>memoryprofiler – 监控 Python 代码的内存使用。<br>profiling – 一个交互式 Python 性能分析工具。<br>65.3 其他<br>pyelftools – 解析和分析 ELF 文件以及 DWARF 调试信息。<br>python-statsd – statsd 服务器的 Python 客户端。</p>
<p>66、Science and Data Analysis：用来进行科学计算和数据分析的库。<br>astropy – 一个天文学 Python 库。<br>bcbio-nextgen – 这个工具箱为全自动高通量测序分析提供符合最佳实践的处理流程。<br>bccb – 生物分析相关代码集合<br>Biopython – Biopython 是一组可以免费使用的用来进行生物计算的工具。<br>blaze – NumPy 和 Pandas 的大数据接口。<br>cclib – 一个用来解析和解释计算化学软件包输出结果的库。<br>NetworkX – 一个为复杂网络设计的高性能软件。<br>Neupy – 执行和测试各种不同的人工神经网络算法。<br>Numba – Python JIT (just in time) 编译器，针对科学用的 Python ，由Cython 和 NumPy 的开发者开发。<br>NumPy – 使用 Python 进行科学计算的基础包。<br>Open Babel – 一个化学工具箱，用来描述多种化学数据。<br>Open Mining – 使用 Python 挖掘商业情报 (BI) (Pandas web 接口)。<br>orange – 通过可视化编程或 Python 脚本进行数据挖掘，数据可视化，分析和机器学习。<br>Pandas – 提供高性能，易用的数据结构和数据分析工具。<br>PyDy – PyDy 是 Python Dynamics 的缩写，用来为动力学运动建模工作流程提供帮助， 基于 NumPy, SciPy, IPython 和 matplotlib。<br>PyMC – 马尔科夫链蒙特卡洛采样工具。<br>RDKit – 化学信息学和机器学习软件。<br>SciPy – 由一些基于 Python ，用于数学，科学和工程的开源软件构成的生态系统。<br>statsmodels – 统计建模和计量经济学。<br>SymPy – 一个用于符号数学的 Python 库。<br>zipline – 一个 Python 算法交易库。</p>
<p>67、数据可视化：进行数据可视化的库。 参见: awesome-javascript。<br>matplotlib – 一个 Python 2D 绘图库。<br>bokeh – 用 Python 进行交互式 web 绘图。<br>ggplot – ggplot2 给 R 提供的 API 的 Python 版本。<br>plotly – 协同 Python 和 matplotlib 工作的 web 绘图库。<br>pygal – 一个 Python SVG 图表创建工具。<br>pygraphviz – Graphviz 的 Python 接口。<br>PyQtGraph – 交互式实时2D/3D/图像绘制及科学/工程学组件。<br>SnakeViz – 一个基于浏览器的 Python’s cProfile 模块输出结果查看工具。<br>vincent – 把 Python 转换为 Vega 语法的转换工具。<br>VisPy – 基于 OpenGL 的高性能科学可视化工具。</p>
<p>68、计算机视觉：计算机视觉库。<br>OpenCV – 开源计算机视觉库。<br>SimpleCV – 一个用来创建计算机视觉应用的开源框架。</p>
<p>69、机器学习：机器学习库。 参见: awesome-machine-learning.<br>Crab – 灵活、快速的推荐引擎。<br>gensim – 人性化的话题建模库。<br>hebel – GPU 加速的深度学习库。<br>NuPIC – 智能计算 Numenta 平台。<br>pattern – Python 网络挖掘模块。<br>PyBrain – 另一个 Python 机器学习库。<br>Pylearn2 – 一个基于 Theano 的机器学习库。<br>python-recsys – 一个用来实现推荐系统的 Python 库。<br>scikit-learn – 基于 SciPy 构建的机器学习 Python 模块。<br>pydeep – Python 深度学习库。<br>vowpalporpoise – 轻量级 Vowpal Wabbit 的 Python 封装。<br>skflow – 一个 TensorFlow 的简化接口(模仿 scikit-learn)。</p>
<p>70、MapReduce：MapReduce 框架和库。<br>dpark – Spark 的 Python 克隆版，一个类似 MapReduce 的框架。<br>dumbo – 这个 Python 模块可以让人轻松的编写和运行 Hadoop 程序。<br>luigi – 这个模块帮你构建批处理作业的复杂流水线。<br>mrjob – 在 Hadoop 或 Amazon Web Services 上运行 MapReduce 任务。<br>PySpark – Spark 的 Python API 。<br>streamparse – 运行针对事实数据流的 Python 代码。集成了Apache Storm。</p>
<p>71、函数式编程：使用 Python 进行函数式编程。<br>CyToolz – Toolz 的 Cython 实现 : 高性能函数式工具。<br>fn.py – 在 Python 中进行函数式编程 : 实现了一些享受函数式编程缺失的功能。<br>funcy – 炫酷又实用的函数式工具。<br>Toolz – 一组用于迭代器，函数和字典的函数式编程工具。</p>
<p>72、第三方 API：用来访问第三方 API的库。 参见： List of Python API Wrappers and Libraries。<br>apache-libcloud – 一个为各种云设计的 Python 库。<br>boto – Amazon Web Services 的 Python 接口。<br>django-wordpress – WordPress models and views for Django.<br>facebook-sdk – Facebook 平台的 Python SDK.<br>facepy – Facepy 让和 Facebook’s Graph API 的交互变得更容易。<br>gmail – Gmail 的 Python 接口。<br>google-api-python-client – Python 用的 Google APIs 客户端库。<br>gspread – Google 电子表格的 Python API.<br>twython – Twitter API 的封装。</p>
<p>73、DevOps 工具：用于 DevOps 的软件和库。<br>Ansible – 一个非常简单的 IT 自动化平台。<br>SaltStack – 基础设施自动化和管理系统。<br>OpenStack – 用于构建私有和公有云的开源软件。<br>Docker Compose – 快速，分离的开发环境，使用 Docker。<br>Fabric – 一个简单的，Python 风格的工具，用来进行远程执行和部署。<br>cuisine – 为 Fabric 提供一系列高级函数。<br>Fabtools – 一个用来编写超赞的 Fabric 文件的工具。<br>gitapi – Git 的纯 Python API。<br>hgapi – Mercurial 的纯 Python API。<br>honcho – Foreman的 Python 克隆版，用来管理基于Procfile的应用。<br>pexpect – Controlling interactive programs in a pseudo-terminal like 在一个伪终端中控制交互程序，就像 GNU expect 一样。<br>psutil – 一个跨平台进程和系统工具模块。<br>supervisor – UNIX 的进程控制系统。</p>
<p>74、任务调度：任务调度库。<br>APScheduler – 轻巧但强大的进程内任务调度，使你可以调度函数。<br>django-schedule – 一个 Django 排程应用。<br>doit – 一个任务执行和构建工具。<br>gunnery – 分布式系统使用的多用途任务执行工具 ，具有 web 交互界面。<br>Joblib – 一组为 Python 提供轻量级作业流水线的工具。<br>Plan – 如有神助地编写 crontab 文件。<br>schedule – 人性化的 Python 任务调度库。<br>Spiff – 使用纯 Python 实现的强大的工作流引擎。<br>TaskFlow – 一个可以让你方便执行任务的 Python 库，一致并且可靠。</p>
<p>75、外来函数接口：使用外来函数接口的库。<br>cffi – 用来调用 C 代码的外来函数接口。<br>ctypes – (Python 标准库) 用来调用 C 代码的外来函数接口。<br>PyCUDA – Nvidia CUDA API 的封装。<br>SWIG – 简化的封装和接口生成器。</p>
<p>76、高性能：让 Python 更快的库。<br>Cython – 优化的 Python 静态编译器。使用类型混合使 Python 编译成 C 或 C++ 模块来获得性能的极大提升。<br>PeachPy – 嵌入 Python 的 x86-64 汇编器。可以被用作 Python 内联的汇编器或者是独立的汇编器，用于 Windows, Linux, OS X, Native Client 或者 Go 。<br>PyPy – 使用 Python 实现的 Python。解释器使用黑魔法加快 Python 运行速度且不需要加入额外的类型信息。<br>Pyston – 使用 LLVM 和现代 JIT 技术构建的 Python 实现，目标是为了获得很好的性能。<br>Stackless Python – 一个强化版的 Python。</p>
<p>77、微软的 Windows平台：在 Windows 平台上进行 Python 编程。<br>Anaconda(强烈推荐)：使用科学软件包免费发布Python。支持Linux，Windows和Mac。<br>Enthought Canopy：免费和商业版本包括核心科学包。支持Linux，Windows和Mac。<br>Python（x，y）：一个免费的发行版，包括基于 Qt 和Spyder IDE的科学包 。支持Windows和Ubuntu；仅限Py2。<br>WinPython：另一个免费发行版，包括科学软件包和Spyder IDE。仅限Windows，但更积极地维护并支持最新的Python 3版本。<br>Pyzo：基于Anaconda和IEP交互式开发环境的免费发行版。支持Linux，Windows和Mac。<br>Pythonlibs：非官方的 Windows 平台 Python 扩展二进制包。<br>PythonNet： Python 与 .NET 公共语言运行库 (CLR)的集成。<br>PyWin32：针对 Windows 的Python 扩展。</p>
<p>78、网络可视化和SDN：用来进行网络可视化和SDN(软件定义网络)的工具和库。<br>Mininet – 一款流行的网络模拟器以及用 Python 编写的 API。<br>POX – 一个针对基于 Python 的软件定义网络应用（例如 OpenFlow SDN 控制器）的开源开发平台。<br>Pyretic – 火热的 SDN 编程语言中的一员，为网络交换机和模拟器提供强大的抽象能力。<br>SDX Platform – 基于 SDN 的 IXP 实现，影响了 Mininet, POX 和 Pyretic。</p>
<p>79、硬件：用来对硬件进行编程的库。<br>ino -操作Arduino的命令行工具。<br>Pyro – Python 机器人编程库。<br>PyUserInput – 跨平台的，控制鼠标和键盘的模块。<br>scapy – 一个非常棒的操作数据包的库。<br>wifi – 一个 Python 库和命令行工具用来在 Linux 平台上操作WiFi。<br>Pingo – Pingo 为类似Raspberry Pi，pcDuino， Intel Galileo等设备提供统一的API用以编程。</p>
<p>80、兼容性：帮助从 Python 2 向 Python 3迁移的库。<br>Python-Future – 这就是 Python 2 和 Python 3 之间丢失的那个兼容性层。<br>Python-Modernize – 使 Python 代码更加现代化以便最终迁移到 Python 3。<br>Six – Python 2 和 3 的兼容性工具。</p>
<p>81、杂项：不属于上面任何一个类别，但是非常有用的库。<br>blinker – 一个快速的 Python 进程内信号/事件分发系统。<br>itsdangerous – 一系列辅助工具用来将可信的数据传入不可信的环境。<br>pluginbase – 一个简单但是非常灵活的 Python 插件系统。<br>Pychievements – 一个用来创建和追踪成就的 Python 框架。<br>Tryton – 一个通用商务框架。</p>
<p>82、算法和设计模式：Python 实现的算法和设计模式。<br>algorithms -一个 Python 算法模块<br>python-patterns – Python 设计模式的集合。<br>sortedcontainers – 快速，纯 Python 实现的SortedList，SortedDict 和 SortedSet 类型。</p>
<p>83、编辑器插件：编辑器和 IDE 的插件。<br>83.1 Emacs：<br>Elpy – Emacs Python 开发环境。<br>83.2 Sublime Text：<br>SublimeJEDI – 一个 Sublime Text 插件，用来使用超赞的自动补全库 Jedi。<br>Anaconda – Anaconda 把你的 Sublime Text 3 变成一个功能齐全的 Python IDE。<br>83.3 Vim：<br>YouCompleteMe – 引入基于 Jedi 的 Python 自动补全引擎。<br>Jedi-vim – 绑定 Vim 和 Jedi 自动补全库对 Python 进行自动补全。<br>Python-mode – 将 Vim 变成 Python IDE 的一款多合一插件。<br>83.4 Visual Studio：<br>PTVS – Visual Studio 的 Python 工具</p>
<p>84、集成开发环境：流行的 Python 集成开发环境。<br>PyCharm – 商业化的 Python IDE ，由 JetBrains 开发。也有免费的社区版提供。<br>LiClipse – 基于 Eclipse 的免费多语言 IDE 。使用 PyDev 来支持 Python 。<br>Spyder – 开源 Python IDE。</p>
<p>85、服务：在线工具和简化开发的 API 。<br>85.1 持续集成：参见: awesome-CIandCD.<br>Travis CI – 一个流行的工具，为你的开源和私人项目提供持续集成服务。(仅支持 GitHub)<br>CircleCI – 一个持续集成工具，可以非常快速的进行并行测试。 (仅支持 GitHub)<br>Vexor CI – 一个为私人 app 提供持续集成的工具，支持按分钟付费。<br>Wercker – 基于 Docker 平台，用来构建和部署微服务。<br>85.2 代码质量：<br>Codacy – 自动化代码审查，更加快速的发布高质量代码。对于开源项目是免费的。<br>QuantifiedCode – 一个数据驱动、自动、持续的代码审查工具。</p>

      
    </div>

    


    
    
    
    
      <div>
        

      </div>
    

    

    
      
    
    

    

    <footer class="post-footer">
      
        <div class="post-tags">
          
            <a href="/tags/python/" rel="tag"><i class="fa fa-tag"></i> python</a>
          
        </div>
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/php/php_xml.html" rel="next" title="PHP XML">
                <i class="fa fa-chevron-left"></i> PHP XML
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/python/django/basic_command.html" rel="prev" title="django basic commands">
                django basic commands <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </div>
  
  
  
  </article>


  </div>


          </div>
          

  
    <div id="gitalk-container">
    </div>
    
  



        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap">
            Table of Contents
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview-wrap">
            Overview
          </li>
        </ul>
      

      <div class="site-overview-wrap sidebar-panel">
        <div class="site-overview">
          <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
            
              <p class="site-author-name" itemprop="name">moonclearner</p>
              <p class="site-description motion-element" itemprop="description">moonclearner record code skill and my feeling</p>
          </div>

          
            <nav class="site-state motion-element">
              
                <div class="site-state-item site-state-posts">
                
                  <a href="/archives/">
                
                    <span class="site-state-item-count">109</span>
                    <span class="site-state-item-name">posts</span>
                  </a>
                </div>
              

              
                
                
                <div class="site-state-item site-state-categories">
                  <a href="/categories/index.html">
                    
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                    <span class="site-state-item-count">29</span>
                    <span class="site-state-item-name">categories</span>
                  </a>
                </div>
              

              
                
                
                <div class="site-state-item site-state-tags">
                  <a href="/tags/index.html">
                    
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                      
                    
                    <span class="site-state-item-count">55</span>
                    <span class="site-state-item-name">tags</span>
                  </a>
                </div>
              
            </nav>
          

          
            <div class="feed-link motion-element">
              <a href="/atom.xml" rel="alternate">
                <i class="fa fa-rss"></i>
                RSS
              </a>
            </div>
          

          
            <div class="links-of-author motion-element">
              
                <span class="links-of-author-item">
                  
                  
                    
                  
                  
                    
                  
                  <a href="https://github.com/moonclearner" title="GitHub &rarr; https://github.com/moonclearner" rel="noopener" target="_blank"><i class="fa fa-fw fa-github"></i>GitHub</a>
                </span>
              
                <span class="links-of-author-item">
                  
                  
                    
                  
                  
                    
                  
                  <a href="mailto:moonclearner@qq.com" title="E-Mail &rarr; mailto:moonclearner@qq.com" rel="noopener" target="_blank"><i class="fa fa-fw fa-envelope"></i>E-Mail</a>
                </span>
              
            </div>
          

          

          
          

          
            
          
          

        </div>
      </div>

      
      <!--noindex-->
        <div class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
            
            
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#1、环境管理：管理-Python-版本和环境的工具。"><span class="nav-number">1.</span> <span class="nav-text">1、环境管理：管理 Python 版本和环境的工具。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2、包管理：管理包和依赖的工具。"><span class="nav-number">2.</span> <span class="nav-text">2、包管理：管理包和依赖的工具。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3、包仓库：本地-PyPI-仓库服务和代理。"><span class="nav-number">3.</span> <span class="nav-text">3、包仓库：本地 PyPI 仓库服务和代理。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#4、分发：打包为可执行文件以便分发。"><span class="nav-number">4.</span> <span class="nav-text">4、分发：打包为可执行文件以便分发。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#5、构建工具：将源码编译成软件。"><span class="nav-number">5.</span> <span class="nav-text">5、构建工具：将源码编译成软件。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#6、交互式解析器：交互式-Python-解析器。"><span class="nav-number">6.</span> <span class="nav-text">6、交互式解析器：交互式 Python 解析器。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#7、文件：文件管理和-MIME（多用途的网际邮件扩充协议）类型检测。"><span class="nav-number">7.</span> <span class="nav-text">7、文件：文件管理和 MIME（多用途的网际邮件扩充协议）类型检测。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#8、日期和时间：操作日期和时间的类库。"><span class="nav-number">8.</span> <span class="nav-text">8、日期和时间：操作日期和时间的类库。</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#9、文本处理：用于解析和操作文本的库。"><span class="nav-number">9.</span> <span class="nav-text">9、文本处理：用于解析和操作文本的库。</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#9-1通用"><span class="nav-number">9.1.</span> <span class="nav-text">9.1通用</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#9-2-Slug化"><span class="nav-number">9.2.</span> <span class="nav-text">9.2 Slug化</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#9-3-解析器"><span class="nav-number">9.3.</span> <span class="nav-text">9.3 解析器</span></a></li></ol></li></ol></div>
            

          </div>
        </div>
      <!--/noindex-->
      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<div class="copyright">&copy; <span itemprop="copyrightYear">2021</span>
  <span class="with-love" id="animate">
    <i class="fa fa-user"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">moonclearner</span>

  
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-area-chart"></i>
    </span>
    
    <span title="Symbols count total">162k</span>
  

  
    <span class="post-meta-divider">|</span>
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
    
    <span title="Reading time total">2:28</span>
  
</div>









<div class="theme-info">
  <div class="powered-by"></div>
  <span class="post-count">博客全站共字</span>
</div>

<div class="powered-by">
<i class="fa fa-user-md"></i><span id="busuanzi_container_site_uv">
  本站访客数:<span id="busuanzi_value_site_uv"></span>
</span>
</div>

        








        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

    

    

    
  </div>

  

<script>
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>


























  
  <script src="/lib/jquery/index.js?v=2.1.3"></script>

  
  <script src="/lib/velocity/velocity.min.js?v=1.2.1"></script>

  
  <script src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>


  


  <script src="/js/src/utils.js?v=6.7.0"></script>

  <script src="/js/src/motion.js?v=6.7.0"></script>



  
  

  
  <script src="/js/src/scrollspy.js?v=6.7.0"></script>
<script src="/js/src/post-details.js?v=6.7.0"></script>



  


  <script src="/js/src/bootstrap.js?v=6.7.0"></script>



  



  











  
  
  <script src="//cdn.jsdelivr.net/npm/gitalk@1.4.0/dist/gitalk.min.js"></script>

  
  
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/gitalk@1.4.0/dist/gitalk.css">

  
  
  <script src="//cdn.jsdelivr.net/npm/js-md5@0.7.3/src/md5.min.js"></script>

   <script>
        var gitalk = new Gitalk({
          clientID: 'e47bf4fb4f5f701fc3a6',
          clientSecret: '9155535868459f5a16e1180edee3a495ecc8eb71',
          repo: 'moonclearner.github.io',
          owner: 'moonclearner',
          admin: ['moonclearner'],
          id: md5(location.pathname),
          distractionFreeMode: 'true'
        })
        gitalk.render('gitalk-container')
       </script>


  

  <script>
    // Popup Window;
    var isfetched = false;
    var isXml = true;
    // Search DB path;
    var search_path = "search.xml";
    if (search_path.length === 0) {
      search_path = "search.xml";
    } else if (/json$/i.test(search_path)) {
      isXml = false;
    }
    var path = "/" + search_path;
    // monitor main search box;

    var onPopupClose = function (e) {
      $('.popup').hide();
      $('#local-search-input').val('');
      $('.search-result-list').remove();
      $('#no-result').remove();
      $(".local-search-pop-overlay").remove();
      $('body').css('overflow', '');
    }

    function proceedsearch() {
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay"></div>')
        .css('overflow', 'hidden');
      $('.search-popup-overlay').click(onPopupClose);
      $('.popup').toggle();
      var $localSearchInput = $('#local-search-input');
      $localSearchInput.attr("autocapitalize", "none");
      $localSearchInput.attr("autocorrect", "off");
      $localSearchInput.focus();
    }

    // search function;
    var searchFunc = function(path, search_id, content_id) {
      'use strict';

      // start loading animation
      $("body")
        .append('<div class="search-popup-overlay local-search-pop-overlay">' +
          '<div id="search-loading-icon">' +
          '<i class="fa fa-spinner fa-pulse fa-5x fa-fw"></i>' +
          '</div>' +
          '</div>')
        .css('overflow', 'hidden');
      $("#search-loading-icon").css('margin', '20% auto 0 auto').css('text-align', 'center');

      

      $.ajax({
        url: path,
        dataType: isXml ? "xml" : "json",
        async: true,
        success: function(res) {
          // get the contents from search data
          isfetched = true;
          $('.popup').detach().appendTo('.header-inner');
          var datas = isXml ? $("entry", res).map(function() {
            return {
              title: $("title", this).text(),
              content: $("content",this).text(),
              url: $("url" , this).text()
            };
          }).get() : res;
          var input = document.getElementById(search_id);
          var resultContent = document.getElementById(content_id);
          var inputEventFunction = function() {
            var searchText = input.value.trim().toLowerCase();
            var keywords = searchText.split(/[\s\-]+/);
            if (keywords.length > 1) {
              keywords.push(searchText);
            }
            var resultItems = [];
            if (searchText.length > 0) {
              // perform local searching
              datas.forEach(function(data) {
                var isMatch = false;
                var hitCount = 0;
                var searchTextCount = 0;
                var title = data.title.trim();
                var titleInLowerCase = title.toLowerCase();
                var content = data.content.trim().replace(/<[^>]+>/g,"");
                
                var contentInLowerCase = content.toLowerCase();
                var articleUrl = decodeURIComponent(data.url).replace(/\/{2,}/g, '/');
                var indexOfTitle = [];
                var indexOfContent = [];
                // only match articles with not empty titles
                if(title != '') {
                  keywords.forEach(function(keyword) {
                    function getIndexByWord(word, text, caseSensitive) {
                      var wordLen = word.length;
                      if (wordLen === 0) {
                        return [];
                      }
                      var startPosition = 0, position = [], index = [];
                      if (!caseSensitive) {
                        text = text.toLowerCase();
                        word = word.toLowerCase();
                      }
                      while ((position = text.indexOf(word, startPosition)) > -1) {
                        index.push({position: position, word: word});
                        startPosition = position + wordLen;
                      }
                      return index;
                    }

                    indexOfTitle = indexOfTitle.concat(getIndexByWord(keyword, titleInLowerCase, false));
                    indexOfContent = indexOfContent.concat(getIndexByWord(keyword, contentInLowerCase, false));
                  });
                  if (indexOfTitle.length > 0 || indexOfContent.length > 0) {
                    isMatch = true;
                    hitCount = indexOfTitle.length + indexOfContent.length;
                  }
                }

                // show search results

                if (isMatch) {
                  // sort index by position of keyword

                  [indexOfTitle, indexOfContent].forEach(function (index) {
                    index.sort(function (itemLeft, itemRight) {
                      if (itemRight.position !== itemLeft.position) {
                        return itemRight.position - itemLeft.position;
                      } else {
                        return itemLeft.word.length - itemRight.word.length;
                      }
                    });
                  });

                  // merge hits into slices

                  function mergeIntoSlice(text, start, end, index) {
                    var item = index[index.length - 1];
                    var position = item.position;
                    var word = item.word;
                    var hits = [];
                    var searchTextCountInSlice = 0;
                    while (position + word.length <= end && index.length != 0) {
                      if (word === searchText) {
                        searchTextCountInSlice++;
                      }
                      hits.push({position: position, length: word.length});
                      var wordEnd = position + word.length;

                      // move to next position of hit

                      index.pop();
                      while (index.length != 0) {
                        item = index[index.length - 1];
                        position = item.position;
                        word = item.word;
                        if (wordEnd > position) {
                          index.pop();
                        } else {
                          break;
                        }
                      }
                    }
                    searchTextCount += searchTextCountInSlice;
                    return {
                      hits: hits,
                      start: start,
                      end: end,
                      searchTextCount: searchTextCountInSlice
                    };
                  }

                  var slicesOfTitle = [];
                  if (indexOfTitle.length != 0) {
                    slicesOfTitle.push(mergeIntoSlice(title, 0, title.length, indexOfTitle));
                  }

                  var slicesOfContent = [];
                  while (indexOfContent.length != 0) {
                    var item = indexOfContent[indexOfContent.length - 1];
                    var position = item.position;
                    var word = item.word;
                    // cut out 100 characters
                    var start = position - 20;
                    var end = position + 80;
                    if(start < 0){
                      start = 0;
                    }
                    if (end < position + word.length) {
                      end = position + word.length;
                    }
                    if(end > content.length){
                      end = content.length;
                    }
                    slicesOfContent.push(mergeIntoSlice(content, start, end, indexOfContent));
                  }

                  // sort slices in content by search text's count and hits' count

                  slicesOfContent.sort(function (sliceLeft, sliceRight) {
                    if (sliceLeft.searchTextCount !== sliceRight.searchTextCount) {
                      return sliceRight.searchTextCount - sliceLeft.searchTextCount;
                    } else if (sliceLeft.hits.length !== sliceRight.hits.length) {
                      return sliceRight.hits.length - sliceLeft.hits.length;
                    } else {
                      return sliceLeft.start - sliceRight.start;
                    }
                  });

                  // select top N slices in content

                  var upperBound = parseInt('1');
                  if (upperBound >= 0) {
                    slicesOfContent = slicesOfContent.slice(0, upperBound);
                  }

                  // highlight title and content

                  function highlightKeyword(text, slice) {
                    var result = '';
                    var prevEnd = slice.start;
                    slice.hits.forEach(function (hit) {
                      result += text.substring(prevEnd, hit.position);
                      var end = hit.position + hit.length;
                      result += '<b class="search-keyword">' + text.substring(hit.position, end) + '</b>';
                      prevEnd = end;
                    });
                    result += text.substring(prevEnd, slice.end);
                    return result;
                  }

                  var resultItem = '';

                  if (slicesOfTitle.length != 0) {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + highlightKeyword(title, slicesOfTitle[0]) + "</a>";
                  } else {
                    resultItem += "<li><a href='" + articleUrl + "' class='search-result-title'>" + title + "</a>";
                  }

                  slicesOfContent.forEach(function (slice) {
                    resultItem += "<a href='" + articleUrl + "'>" +
                      "<p class=\"search-result\">" + highlightKeyword(content, slice) +
                      "...</p>" + "</a>";
                  });

                  resultItem += "</li>";
                  resultItems.push({
                    item: resultItem,
                    searchTextCount: searchTextCount,
                    hitCount: hitCount,
                    id: resultItems.length
                  });
                }
              })
            };
            if (keywords.length === 1 && keywords[0] === "") {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-search fa-5x"></i></div>'
            } else if (resultItems.length === 0) {
              resultContent.innerHTML = '<div id="no-result"><i class="fa fa-frown-o fa-5x"></i></div>'
            } else {
              resultItems.sort(function (resultLeft, resultRight) {
                if (resultLeft.searchTextCount !== resultRight.searchTextCount) {
                  return resultRight.searchTextCount - resultLeft.searchTextCount;
                } else if (resultLeft.hitCount !== resultRight.hitCount) {
                  return resultRight.hitCount - resultLeft.hitCount;
                } else {
                  return resultRight.id - resultLeft.id;
                }
              });
              var searchResultList = '<ul class=\"search-result-list\">';
              resultItems.forEach(function (result) {
                searchResultList += result.item;
              })
              searchResultList += "</ul>";
              resultContent.innerHTML = searchResultList;
            }
          }

          if ('auto' === 'auto') {
            input.addEventListener('input', inputEventFunction);
          } else {
            $('.search-icon').click(inputEventFunction);
            input.addEventListener('keypress', function (event) {
              if (event.keyCode === 13) {
                inputEventFunction();
              }
            });
          }

          // remove loading animation
          $(".local-search-pop-overlay").remove();
          $('body').css('overflow', '');

          proceedsearch();
        }
      });
    }

    // handle and trigger popup window;
    $('.popup-trigger').click(function(e) {
      e.stopPropagation();
      if (isfetched === false) {
        searchFunc(path, 'local-search-input', 'local-search-result');
      } else {
        proceedsearch();
      };
    });

    $('.popup-btn-close').click(onPopupClose);
    $('.popup').click(function(e){
      e.stopPropagation();
    });
    $(document).on('keyup', function (event) {
      var shouldDismissSearchPopup = event.which === 27 &&
        $('.search-popup').is(':visible');
      if (shouldDismissSearchPopup) {
        onPopupClose();
      }
    });
  </script>





  

  

  
  <script>
    (function(){
      var bp = document.createElement('script');
      var curProtocol = window.location.protocol.split(':')[0];
      if (curProtocol === 'https') {
        bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';        
      }
      else {
        bp.src = 'http://push.zhanzhang.baidu.com/push.js';
      }
      var s = document.getElementsByTagName("script")[0];
      s.parentNode.insertBefore(bp, s);
    })();
  </script>


  

  

  

  

  

  

  

  

  

  

</body>
<script type="text/javascript" src="/js/src/dynamic_bg.js"></script>
<script src="https://cdn.jsdelivr.net/gh/moonclearner/live2d-widget/autoload.js"></script>
</html>
